Il existe dans le monde des bases de données deux grandes catégories : les BDD structurées (ou relationnelles) et les BDD non-structurées.
Vous retrouverez pour représenter ces différents types de bases de données également les termes de SQL et NoSQL (qui signifie Not Only SQL et non pas NO SQL).
Par défaut, Django utilise un système de gestion de base de données relationnelles (SGBDR !) nommé Sqlite, avec la bibliothèque Python correspondante, sqlite3.
Il est bien entendu possible de modifier le SGBD utilisé par Django pour utiliser par exemple une BDD PostgreSQL ou encore MongoDB.
Un ORM (Object-Relational Mapping ou « Mapping objet-relationel »), est un moyen de travailler avec une base de données avec une logique d'orienté objet, sans avoir besoin d'utiliser de code SQL. Dans le cas de l'ORM de Django, on utilise donc directement du Python, des classes et des instances pour représenter et récupérer les données de notre base de données.
Pour représenter une table de notre base de donnée, on crée donc un modèle qui hérite de la classe Model :
from django.db import models class BlogPost(models.Model): title = models.CharField(max_length=128)
☝️ La classe BlogPost sera représentée par une table dans la base de donnée de notre projet et les attributs de classe comme title ici correspondront aux colonnes de la table.
Une instance créée à partir de cette classe sera représentée par un enregistrement dans la table correspondante.